package cn.org.timespace.easyframe.util.sms;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.util.Properties;

import com.huawei.insa2.comm.sgip.message.SGIPMessage;
import com.huawei.insa2.comm.sgip.message.SGIPSubmitMessage;
import com.huawei.insa2.comm.sgip.message.SGIPSubmitRepMessage;
import com.huawei.insa2.util.Args;
import com.huawei.smproxy.SGIPSMProxy;

public class Send {

	//private static final Log log = LogFactory.getLog(SmsDAOImpl.class);
	
	private static String SPNumber = "106550730109801";//�������
	private static String ChargeNumber = "106550730109801"; // �ƷѺ��룬�����ǰ���
	private static String ServiceType = "0";//��������
	private static String host = "61.240.233.235"; // ��������IP
	// �˿ںţ������ر�ע���£�����Э����д����8804�������ҵ��˺ܾã���4��֪�8��ˣ����ԣ�����ڽ���ǰ�������������Աȷ��
	private static int port = 40000; 
	private static String CorpId = "10239"; // ��ҵ����
	private static String login_Name = "aapwab"; // ��½��
	private static String login_PassWord = "onefha"; // ��½����
	
	//���Ƿ��ͳɹ���0��ʾ�ɹ��������ʾʧ��
	private int isSuccess=0;
	
	private SGIPSMProxy sgipsmp=null;

	public static void main(String[] args){
		Send send=new Send();
		String[] userNumber= {"18909976868","18909966868","18999001844"};//18688867980-13143708007
		try {
			send.sendSms(userNumber, "�յ����ţ�����10659607001�ϻظ�һ����ţ�");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
	/**
	 * ��÷��Ͷ��ŵĲ���
	 * ��sms.properties�л��
	 * */
	public Send(){
		Properties prop = new Properties();
		try {
			prop.load(Send.class.getClassLoader().getResourceAsStream("sms.properties"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		SPNumber = prop.getProperty("SPNumber");
		ChargeNumber = prop.getProperty("ChargeNumber");
		ServiceType = prop.getProperty("ServiceType");
		host = prop.getProperty("host");
		port = Integer.parseInt(prop.getProperty("port"));
		CorpId = prop.getProperty("CorpId");
		login_Name = prop.getProperty("login_Name");
		login_PassWord = prop.getProperty("login_PassWord");
		
		//Դ�ڵ��ţ���һ���ǳ���Ҫ����Ϊ���У����ֶ�����Ϊint�������Э����Ҫ������ҵ����ǰ����30000��
		//����ͳ�����int��ȡֵ��Χ��������Ҫ��BigIntegerתһ�¾Ϳ�����
		int srcnode =new BigInteger(CorpId).intValue();    
		Args argstr = new Args();
		
		argstr.set("host", host);
		argstr.set("port", port);
		argstr.set("transaction-timeout", 10); // ����ʱʱ��(��λ����)
		argstr.set("read-timeout", 15); // ����l�Ӷr���ʱʱ��(��λ����)
		argstr.set("source-addr",  srcnode); // SP��ID(���Ϊ��λ�ַ�)
		argstr.set("login-name", login_Name);
		argstr.set("login-pass", login_PassWord);
		argstr.set("debug", "true");
		
		// l�ӵ�½
		sgipsmp = new SGIPSMProxy(argstr); // ����
		try {
			boolean reslut = sgipsmp.connect(login_Name, login_PassWord); // ��½�õ�true��false

			//log.info("reslut:::::::" + reslut);
			if (reslut) {
				//log.info("l�ӳɹ�...........");
			} else {
				//log.info("l��ʧ��(�û�����������)...........");
				isSuccess=-1;
			}
		} catch (Exception ex) {
			//log.info("�����쳣...........");
			ex.printStackTrace();
			isSuccess=-2;
		}
	}
	
	/**
	 * ���Ͷ���
	 * String[] userNumber = { "86156xxxxxxxx","86156xxxxxxxx"};//���ն��ŵ��ֻ���룬ǰ��Ҫ����86
	 * String content = "���Ų�������";
	 * ֱ�ӷ��͸�jͨ���
	 * */
	public int sendSms(String[] userNumber,String content) throws UnsupportedEncodingException {
		

		byte[] MessageContent = content.getBytes("GB2312");
		try {
			// �·���Ϣ
			SGIPSubmitMessage sgipsubmit = new SGIPSubmitMessage(
					SPNumber, // SP�Ľ������
					ChargeNumber, // ���Ѻ��� string
					userNumber, // ���ոö���Ϣ���ֻ�ţ����100����� string[]
					CorpId, // ��ҵ���룬ȡֵ��ΧΪ0��99999 string
					ServiceType, // ҵ����룬��SP���� stirng
					03, // �Ʒ����� int
					"0", // �������Ϣ���շ�ֵ stirng
					"0", // �����û��Ļ��� string
					0, // ���շѱ�־0��Ӧ��1��ʵ�� int
					0, // ����MT��Ϣ��ԭ�� int
					06, // ���ȼ�0��9�ӵ� ���ߣ�Ĭ��Ϊ0 int
					null, // ����Ϣ�������ֹʱ�� date
					null, // ����Ϣ��ʱ���͵�ʱ�� date
					1, // ״̬������ int
					0, // GSMЭ������ int
					0, // GSMЭ������ int
					15, // ����Ϣ�ı����ʽ int
					0, // ��Ϣ���� int
					MessageContent.length, // ����Ϣ���ݳ��� int
					MessageContent, // ����Ϣ������ btye[]
					"0" // ����)չ�� string
			);
			// �յ�����Ӧ��Ϣת����rep
			int status= ProcessSubmitRep(sgipsmp.send(sgipsubmit));
			//log.info(status);
			if (status == 0) {
			//	log.info("��Ϣ���ͳɹ�..........");
				isSuccess=0;
			} else {
			//	log.info("��Ϣ����ʧ��..........");
				isSuccess=-3;
			}
		} catch (Exception ex) {
		//	log.error("������Ϣ�쳣:"+ex.getMessage(),ex);
			ex.printStackTrace();
			isSuccess=-3;
		}
		return isSuccess;

	}

	private static int ProcessSubmitRep(SGIPMessage msg) {
		// �յ�����Ӧ��Ϣת����repMsg
		SGIPSubmitRepMessage repMsg = (SGIPSubmitRepMessage) msg;
		//log.info(repMsg.getSrcNodeId());
		//log.info("status:::::::" + repMsg.getResult());
		if (repMsg != null && repMsg.getResult() == 0) {
		//	log.info("���ͳɹ�������");
			System.out.println("���ͳɹ�������");
		}
		return repMsg.getResult();
	}
}

